USE [AlegroPedidos]
GO
/****** Object:  Trigger [dbo].[trgAprovaExportaPedido]    Script Date: 06/02/2015 21:28:03 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER TRIGGER [dbo].[trgAprovaExportaPedido] ON [dbo].[tbl_pedido]
FOR UPDATE
AS
  BEGIN
        --variaveis
		DECLARE @ped_status_comercial INT ;			--status comercial
        DECLARE @ped_status_financeiro INT ;		--status financeiro
        DECLARE @ped_status_final INT ;				--status combinado do pedido
        DECLARE @ped_codigo_alegro_pedido INT ;		--codigo gerado pelo alegro sistemas
		DECLARE @ped_codigo_singem INT;				--codigo restornado do singem
		DECLARE @ped_emissao DATETIME ;				--data pedido
		DECLARE @codigo_vendedor VARCHAR(2);		--vendedor
		DECLARE @cli_codigo VARCHAR(20);			--cliente

       
        SELECT @ped_status_comercial		= i.ped_status_comercial FROM inserted i;  
        SELECT @ped_status_financeiro		= i.ped_status_financeiro FROM inserted i;      
        SELECT @ped_codigo_alegro_pedido 	= i.ped_codigo FROM inserted i;
        SELECT @ped_status_final 			= i.ped_status FROM inserted i;
		SELECT @ped_emissao 				= i.ped_emissao FROM inserted i;
		SELECT @codigo_vendedor 			= i.usu_vendedor_singem FROM inserted i;
		--select @cli_codigo 				= cast(i.cli_codigo as varchar) from inserted i;

       
        --if update(ped_status_comercial) and update(ped_status_financeiro)
        IF (@ped_status_final = 0 AND @ped_status_comercial = 1 AND @ped_status_financeiro = 1)
		BEGIN
			SET @ped_status_final = 1;

        	-- atualiza o status do pedido no singem;
			update tbl_pedido SET ped_status = @ped_status_final WHERE ped_codigo = @ped_codigo_alegro_pedido;

			-- retorna o ultimo codigo do pedido do singem mais um
			SELECT @ped_codigo_singem = [Chave]+1 FROM [SingemSQL].[dbo].[NumeracaoPedido];
			SELECT @cli_codigo = cli_codigo FROM tbl_pedido WHERE ped_codigo = @ped_codigo_alegro_pedido;
            
						
			--atualiza ultimo codigo singem
			update [SingemSQL].[dbo].[NumeracaoPedido] SET [Chave] = left(replicate('0',2) + cast(@ped_codigo_singem AS VARCHAR),5);			

			-- insere no singem o pedido do AlegroPedidos
			INSERT INTO [SingemSQL].[dbo] .[Pedidos] (
												[Chave]												
												,[Cliente]												
												,[Emissao]												
												,[Documento]												
												,[ER]												
												,[Vendedor]												
												,[ComissVendedor]
												,[Emissor] 												
												,[Observacoes]    												
												,[TpRecebimento]
												,[Cancelado]												
												,[Desconto]
												,[DescontoPer]
												,[Entrega]
												,[Atendido] 
												,[Prazo]   
												--,[Bruto]
												--,[Liquido]
												,[Classificacao]
												,[Cotacao]    
												,[Area]												
												,[Prioridade]    
												,[EliminarCarregamento]    
												,[Vias]
												,[Sincronizacao]    
												,[Bloqueado]
												,[Conferencia]
												,[ICMSubst]
												) 
											SELECT
											  (left(replicate('0',2) + cast(@ped_codigo_singem AS VARCHAR),5)) AS Chave											   											   
											  ,cast(cli_codigo AS VARCHAR) AS Cliente							
											   ,@ped_emissao AS Emissao											   
											   ,(left(replicate('0',2) + cast(@ped_codigo_singem AS VARCHAR),5)) AS Documento											   
											   ,'T' AS ER											   
											   ,cast(usu_vendedor_singem AS VARCHAR(2)) AS Vendedor											   
											   ,Cast((SELECT comissao FROM [SingemSQL].[dbo].[Cad_Vendedor] WHERE Vendedor = @codigo_vendedor) as float) AS [ComissVendedor]
											   ,ped_emisso AS Emissor											   
											   ,ped_observacoes AS Observacoes			
											   ,ped_prazo as TpRecebimento		--campo com assunto trocado. O ped_prazo é na verdade  tp_recebimento						   
											   --,ped_tipo_tp_recebimento as TpRecebimento
											   ,ped_cancelado AS Cancelado											   
											   --,cast(ped_desconto as varchar(1)) as Desconto											   
											   ,'F' AS Desconto
											   ,cast(dbo.Varchar2float(ped_desconto) as float) AS [DescontoPer]
											   ,ped_entrega AS Entrega
											   ,'F' AS Atendido
											   --,ped_prazo as Prazo campo com assunto trocado. O ped_prazo é na verdade  tp_recebimento
											   ,cast(0.00 as float) AS Prazo
											   --,ped_peso_bruto as Bruto
											   --,ped_peso_liquido as Liquido
											   ,ped_tabela AS Classificacao
											   ,'F' AS Cotacao
											   ,'' AS Area
											   --,cast(ped_prioridade as varchar(2)) as Prioridade
											   ,'01' AS Prioridade
											   ,'F' AS EliminarCarregamento
											   ,0 AS Vias
											   ,CURRENT_TIMESTAMP AS Sincronizacao
											   ,'F' AS Bloqueado
											   ,'F' AS Conferencia
											   ,'F' AS ICMSubst 
										FROM tbl_pedido WHERE ped_codigo = @ped_codigo_alegro_pedido ;
						
	
	INSERT INTO [SingemSQL].[dbo] .[MovimentoPedidos] (
				Chave1
				,Data 
				,Produto
				,Quantidade
				,Custo
				,Preco				
				,Vendedor				
				,ComissVendedor				
				,Tipo				
				,Faturado				
				,Cliente				
				,Historico				
				,Documento
				,Unidade				
				,Grupo				
				,Cancelado
				,CCadastro
				,PCadastro
				,ICMS
				,Desconto
				,QuantidadePedida
				,Entrega
				,Referencia
				,Sincronizacao				

	)
		SELECT
		(left(replicate('0',2) + cast(@ped_codigo_singem AS VARCHAR),5)) AS Chave1	     
		,cast(CONVERT(VARCHAR, @ped_emissao, 103) AS DATETIME) AS Data		
        --,convert(varchar,  [pro_codigo]) as Produto		
        ,[pro_codigo] AS Produto
        ,cast([pro_quantidade]*- 1 AS FLOAT) AS Quantidade 		
		,cast(0 AS float) AS Custo
		,cast(dbo.Varchar2float([pro_valor_unitario])as float)  AS Preco		
		,cast(@codigo_vendedor AS VARCHAR(2)) AS Vendedor		
		,cast(dbo.Varchar2float([pro_comissao_vendedor]) as float) AS ComissVendedor		
		,'Saída2' AS Tipo		
        ,'1' AS Faturado		
		,cast(@cli_codigo AS VARCHAR) AS Cliente
		,'PEDIDO VIA ALEGRO PEDIDOS' AS Historico		
		,(left(replicate('0',2) + cast(@ped_codigo_singem AS VARCHAR),5)) AS Documento
		,cast(([pro_quantidade]*- 1) as float)   AS Unidade		
		,(SELECT Grupo FROM [SingemSQL].[dbo].[Cad_Produtos] WHERE Produto LIKE [pro_codigo]) AS Grupo		
		,'F' AS Cancelado		
		,cast((SELECT Preco_Tabela FROM [SingemSQL].[dbo].[Cad_Produtos] WHERE Produto LIKE [pro_codigo]) as float) AS CCadastro
		,cast(dbo.Varchar2float([pro_valor_unitario]) as float) AS PCadastro
		,cast((SELECT [Aliquota1] FROM [SingemSQL].[dbo].[Cad_ICMS] WHERE UF = (SELECT UF FROM [SingemSQL].[dbo].Cad_Clientes WHERE Cliente = cast(@cli_codigo AS VARCHAR))) as float) AS ICMS
		,cast([pro_quantidade]*- 1 AS FLOAT) AS Desconto
		,cast([pro_quantidade] as float) AS QuantidadePedida
		,null AS Entrega
		--,convert(varchar, [pro_codigo]) as Referencia   
		,[pro_codigo] AS Referencia
		 ,CURRENT_TIMESTAMP AS Sincrozincao
		--,[pro_valor_total_produto]
		--,[pro_comissao_cliente]
		--,[pro_ipi] as IPI
		--,[pro_status]
		--,[pro_excluido]       
  FROM [AlegroPedidos].[dbo].[tbl_produto] WHERE ped_codigo = @ped_codigo_alegro_pedido;    

END
	--print CONVERT(VARCHAR(23), @ped_emissao, 121)

END
